﻿using OT.HikiSecureCenterApis.Service.OneCard.Req;

namespace OT.HikiSecureCenterApis.Service.OneCard.Res
{
    public class ResAauthDownloadTaskSimpleDownload
    {
        /// <summary>
        /// 资源下载记录
        /// </summary>
        public ResourceDownloadResult resourceDownloadResult { get; set; }
        /// <summary>
        /// 资源的下载记录详情
        /// </summary>
        public ResourceDownloadDetail resourceDownloadDetail { get; set; }
    }


    public class ResourceDownloadResult
    {
        /// <summary>
        /// 下载记录唯一ID
        /// </summary>
        public string downloadResultId { get; set; }
        /// <summary>
        /// 下载时间（采用ISO8601时间格式，如2019-09-03T17:30:08.000+08:00）
        /// </summary>
        public string downloadTime { get; set; }
        /// <summary>
        /// 标签
        /// </summary>
        public string tagId { get; set; }
        /// <summary>
        /// 下载任务唯一标识
        /// </summary>
        public string taskId { get; set; }
        /// <summary>
        /// 任务操作类型（0:初始化下载；1:异动下载；2:指定下载；3:快速下载；4:自动下载；5:同步下载）
        /// </summary>
        public int taskOptType { get; set; }
        /// <summary>
        /// 下载任务类型,参考附录A.53 任务下载类型说明
        /// </summary>
        public int taskType { get; set; }
        /// <summary>
        /// 资源对象
        /// </summary>
        public ResourceInfo resourceInfo { get; set; }
        /// <summary>
        /// 下载开始时间，下载开始时间，采用ISO8601时间格式，最大长度32个字符，如2018-09-03T17:30:08.000+08:00
        /// </summary>
        public string startTime { get; set; }
        /// <summary>
        /// 下载结束时间，下载结束时间，采用ISO8601时间格式，最大长度32个字符，如2018-09-03T17:30:08.000+08:00
        /// </summary>
        public string endTime { get; set; }
        /// <summary>
        /// 下载结果，0：成功， 1：失败， 2：部分成功
        /// </summary>
        public int downloadResult { get; set; }
        /// <summary>
        /// 下载错误码，在出现异常时有值（比如：设备不在线导致的下载失败，设备能力集不支持，驱动异常，服务异常等）
        /// </summary>
        public string errorCode { get; set; }
        /// <summary>
        /// 已下发人员数量
        /// </summary>
        public int downloadPersonCount { get; set; }
        /// <summary>
        /// 下载成功人员数量
        /// </summary>
        public int successedPersonCount { get; set; }
        /// <summary>
        /// 下载失败人员数量
        /// </summary>
        public int failedPersonCount { get; set; }
    }

    public class Card
    {
        /// <summary>
        /// 卡号
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 操作类型，1. 下载权限 2. 删除权限
        /// </summary>
        public int operatorType { get; set; }
        /// <summary>
        /// 错误码0 - 成功 其他 - 失败 参考附录E.2.3 出入控制权限错误码
        /// https://open.hikvision.com/docs/5a6616f2134e43d1ba338309a8df2387?curNodeId=5a6616f2134e43d1ba338309a8df2387#c3be41a7
        /// </summary>
        public string errorCode { get; set; }
    }

    public class Face
    {
        /// <summary>
        /// 人脸ID
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 错误码0 - 成功 其他 - 失败 参考附录E.2.3 出入控制权限错误码
        /// https://open.hikvision.com/docs/5a6616f2134e43d1ba338309a8df2387?curNodeId=5a6616f2134e43d1ba338309a8df2387#c3be41a7
        /// </summary>
        public string errorCode { get; set; }
        /// <summary>
        /// 错误描述，比如：当出现人脸重复时，该字段返回重复的卡号。
        /// </summary>
        public int operatorType { get; set; }
        /// <summary>
        /// 操作类型，1. 下载权限 2. 删除权限
        /// </summary>
        public string errorMsg { get; set; }
    }

    public class PersonDownloadDetail
    {
        /// <summary>
        /// 卡片下载记录
        /// </summary>
        public IList<Card> cards { get; set; }
        /// <summary>
        /// 人脸下载记录
        /// </summary>
        public IList<Face> faces { get; set; }
    }

    public class ResourceDownloadDetail
    {
        /// <summary>
        /// 下载记录唯一ID
        /// </summary>
        public string downloadResultId { get; set; }
        /// <summary>
        /// 人员ID
        /// </summary>
        public string personId { get; set; }
        /// <summary>
        /// 下载结果状态，0成功，1失败，2部分成功
        /// </summary>
        public string persondownloadResult { get; set; }
        /// <summary>
        /// 下载时间，采用ISO8601时间格式，最大长度32个字符，如2018-09-03T17:30:08.000+08:00
        /// </summary>
        public string downloadTime { get; set; }
        /// <summary>
        /// 下载的详细描述
        /// </summary>
        public PersonDownloadDetail personDownloadDetail { get; set; }
    }
}
